Mer om Pekare

 

Lösning till uppgiften pekare 1

 

/*******uttrycka värdet ******/

 

cout<<"varden: johanna = "<<johanna;

cout<<", *p_johanna = "<<*p_johanna<<"\n";

 

 

/*******uttrycka adressen ******/

 

cout<<"Adressen: &johanna = "<<&johanna<<"\n";

cout<<"p_johanna = "<<p_johanna<<"\n";

 

 

/******använda pekare för att ändra värdet******/

*p_johanna = *p_johanna + 1;

 

cout<<"nu ar johanna: "<<johanna<<endl<<endl;

 

      system("PAUSE");

      return 0;

}

 

 

 

Vad gör då pekare?

Pekare skickar istället adressen till den data som används istället för att skicka datan.

Vi skickar adressen istället för att skicka huset.

 I fall där man arbetar med större mängder data så gör användandet av pekare programmet snabbare och i de fallen som man arbetar med mindre mängder data blir programmet inte slöare. Detta betyder att man vinner på att använda pekare. Om man vill ha ett enkelt exempel på hur en pekare fungerar kan man titta på genvägar i windows, där flyttar man inte all data när man flyttar eller kopierar genvägen vilket gör att man i vissa fall kan spara både tid och minne (i detta fallet hårddiskutrymme).

 

Variabler, adresser och minne

En dator använder sitt minne för att lagra saker.

Man kan tänka sig minnet som en stor låda, indelad i en massa fack. Alla dessa fack är numrerade.

När man skapar variabler hamnar de i dessa fack. Det går inte att i förväg veta var de hamnar, detta sköts av operativsystemets minneshantering. Olika datatyper tar upp olika mycket plats i minnet, exempelvis så tar en char upp en byte (ett fack i lådan), en int tar upp fyra och en double åtta platser eller fack.

 

int mitt_tal;
char ch;

mitt_tal = 5;
ch = 'a';

 

Vi tänker oss att systemet placerar variablerna i minnet enligt fäljande.

 

 

 

För att vi ska ha möjlighet att navigera fram och åter i minnet måste vi alltså bestämma vilken typ av pekare vi skall använda.

Annars vet vi inte hur stora steg vi ska ta!

 

Jämför användandet att av arrayer : int minLista[5]

minLista är av typen inte varje plats tar alltså upp 4 minnespositioner.

Om minLista[0] finns på minneplats 100 kommer minLista[1] att finnas på plats 104.